package com.novanok.mailtweets;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import com.novanok.mailtweets.adapter.ListaCuentaAdapter;
import com.novanok.mailtweets.entidad.Cuenta;

import java.util.ArrayList;
import java.util.Map;

public class ActivityCuenta extends Activity {

    private static final String TAG = "ActivityCuenta";
    public static Cuenta cuentaSeleccionada = null;

    private Map<String, Cuenta> cuentas = null;

    @Override
    protected void onCreate( Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );
        setContentView(R.layout.activity_cuenta);

        this.cuentas = MyActivity.getCuentas();

        setClickLista();
    }

    public void onResume(){
        super.onResume();
        this.cuentas = MyActivity.getCuentas();
        this.actualizar();
    }

    @Override
    public boolean onCreateOptionsMenu( Menu menu ) {
        getMenuInflater().inflate( R.menu.menu_cuenta, menu );
        return true;
    }

    private void actualizar(){
        if ( this.cuentas != null ) {
            ArrayList<Cuenta> listaCuenta = new ArrayList<Cuenta>();

            for ( Cuenta c : this.cuentas.values() ){
                listaCuenta.add(c);
            }

            (( ListView ) ActivityCuenta.this.findViewById( R.id.lstPalabras )).setAdapter(
                    new ListaCuentaAdapter( ActivityCuenta.this, listaCuenta ) );
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch ( item.getItemId() ) {
            case R.id.nuevo_cuenta:
                this.nuevoCuenta();
                return true;

            case R.id.eliminar_cuenta:
                this.eliminarCuenta();
                return true;

            case R.id.volver_cuenta:
                finish();
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

    public void eliminarCuenta (){
        ListaCuentaAdapter adapter = ( ListaCuentaAdapter )( ( ListView ) findViewById( R.id.lstPalabras ) ).getAdapter();
        if ( cuentaSeleccionada != null ) {
            this.cuentas.remove(cuentaSeleccionada.getId());
            adapter.notifyDataSetChanged();

            Log.d(TAG, "Eliminacion de la Cuenta");
        }
    }

    public void nuevoCuenta(){
        Intent i = new Intent(this, ActivityCuentaItem.class);
        i.putExtra("palabra_accion", "nuevo");
        startActivity(i);
    }

    private void setClickLista(){
        ListView lv = ( ListView )findViewById( R.id.lstPalabras );

        lv.setOnItemClickListener( new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick( AdapterView<?> adapterView, View view, int i, long l ) {
                view.setSelected( true );

                ListaCuentaAdapter adapter = ( ListaCuentaAdapter )( ( ListView ) findViewById( R.id.lstPalabras ) ).getAdapter();
                Cuenta toRemove = adapter.getItem( ( ( ListView ) findViewById( R.id.lstPalabras ) ).getPositionForView( view ) );
                ActivityCuenta.cuentaSeleccionada = toRemove;

                Log.d( TAG, "Click Item Lista " + toRemove.getDescripcion() );
            }
        });
    }
}
